Levenshtein Algorithm

#Algorithm #Algorithm_Levenshtein #Algorithm_DP

0. 관련 문제

72. Edit Distance


1. Levenshtein Algorithm

=> 두 대상간의 유사도를 계산할 때 사용하는 알고리즘

더 정확히 말하면, 어떤 대상 A를 변경해서 B를 만든다고 했을 때, 변경을 실행한 가장 적은 횟수를 구하는 알고리즘이다. 문자열을 대표적인 예로 들 수 있는데, 'kotlin' 이라는 단어를 'lint'로 변경할 때에 몇번의 조작이 들어가야 하냐는 것을 구할 때 사용할 수 있다.

Levenshtein Distance(Edit Distance, 편집 거리 알고리즘), leesumin 포스트에 자세한 설명이 잘 되어있다.


2. 문자열 최소 변경 횟수 구하기

여기서 '변경'이라는 조작은 3가지 이다. 삽입, 삭제, 대체가 그것이다.

2-1. Edit Distance Array 이해하기

Levenshtein Distance, Claire Lee 포스트에 그림으로 설명이 잘 되어 있다.

S1 -> S2로 변경된다고 했을 때 min distance를 구하는 memoization 배열의 공식은 다음과 같다.
S1이 col에 위치하고, S2가 row에 위치한다고 했을 때, 삽입, 삭제, 대체의 연산 횟수는 다음과 같다.

내가 생각했을 때 각각의 의미는 다음과 같다.